package com.corpgovernment.organization.Bo;

import com.corpgovernment.job.dao.entity.db.JobDo;
import com.corpgovernment.organization.entity.db.MbPostInfo;
import com.corpgovernment.permission.entity.db.MbRole;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
public class SyncEmployeeInfoBo {

    @AllArgsConstructor
    @NoArgsConstructor
    @Getter
    public enum SheetEnum{
        EMP(0, "员工"),
        CARD(1, "证件");

        private int index;
        private String name;
    }

    @AllArgsConstructor
    @NoArgsConstructor
    @Getter
    public enum SyncType{
        ADD(0, "add"),
        UPDATE(1, "update");

        private int index;
        private String desc;
    }

    private String lineNo;

    private Long empId;
    /**
     * 是否删除员工（默认不删除）
     */
    private Boolean isDelete;
    /**
     * 员工ID，对应客户公司员工主键
     */
    private String uid;
    /**
     * 员工名称
     */
    private String name;
    /**
     * 员工名称
     */
    private String lastName;
    /**
     * 员工名称
     */
    private String firstName;
    /**
     * 手机国家码
     */
    private String countryCode;

    /**
     * 上级员工id
     */
    private String manageUid;

    /**
     * 手机号
     */
    private String mobilePhone;
    /**
     * 登录密码（不传默认同手机号）
     */
    private String password;
    /**
     * 生日（yyyy-MM-dd）
     */
    private String birthday;
    /**
     * 性别，不传则默认男性（M男性、F女性）
     */
    private String gender;
    /**
     * 邮箱
     */
    private String email;
    /**
     * 国籍，不传默认中国（中国CN、香港HK，参考通用的国家二字码）
     */
    private String nationality;

    /**
     * 国籍代码
     */
    private String nationCode;

    /**
     * 国籍名称
     */
    private String nationName;
    /**
     * 银行卡号
     */
    private String creditCardNumbers;
    /**
     * 公司编码
     */
    private String businessCode;

    /**
     * 公司/部门id
     */
    private String orgId;

    /**
     * 最近一级公司id
     */
    private String firstCorgId;

    /**
     * 最近一级公司组织下的所有角色
     */
    private List<MbRole> mbRoleList = new ArrayList<>();

    /**
     * 最近一级公司组织下的所有职级
     */
    private List<MbPostInfo> mbPostList = new ArrayList<>();
    /**
     * 当前公司组织下所有的岗位
     */
    private List<JobDo> jobDoList = new ArrayList<>();

    /**
     * 职级名称
     */
    private String postName;
    /**
     * 职级ID
     */
    private Long postId;
    /**
     * 职级CODE
     */
    private String postCode;
    /**
     * 员工类型
     */
    private Integer employeeType;
    /**
     * 证件信息列表
     */
    private List<SyncEmployeeCardInfoBo> cardInfoList;
    /**
     * 角色
     */
    private String roleName;
    /**
     * 岗位名称
     */
    private String jobName;
    /**
     * 岗位编号
     */
    private String jobCode;
    /**
     * 岗位ID
     */
    private Long jobId;

    @Data
    public static class SyncEmployeeCardInfoBo {
        private String lineNo;
        /**
         * 员工ID，对应客户公司员工主键
         */
        private String uid;
        /**
         * 证件类型（1:身份证; 2:护照; 3:学生证; 4:军人证; 6:驾驶证; 7:回乡证; 8:台胞证; 10:港澳通行证; 11:国际海员证; 21:旅行证; 22:台湾通行证; 25:户口簿; 27:出生证明; 28:外国人永久居留身份证; 32:港澳台居民居住证）
         */
        private String cardType;
        /**
         * 证件号码
         */
        private String cardNo;
        /**
         * 证件有效期（yyyy-MM-dd）
         */
        private String timeLimit;
        /**
         * 证件签发国
         */
        private String placeOfIssue;
    }
}
